﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CG67.EspaceRencontre.Domaine;
using CG67.EspaceRencontre.AccesDonnees;
using System.Data;

namespace CG67.EspaceRencontre.Services
{
    /// <summary>
    /// comporte les méthodes associées à l'objet "RendezVous" défini dans la couche "Domaine"
    /// </summary>
    public class RendezVousService
    {
        #region GetAllRendezVous
        /// <summary>
        /// récupère tous les rendez-vous de la table RendezVous
        /// </summary>
        /// <returns><c>List<RendezVous></c></returns>
        public static List<RendezVous> GetAllRendezVous()
        {
            DataSet ds = RendezVousDB.GetAllRendezVous();
            DataTable dt = ds.Tables[0];
            List<RendezVous> listeRendezVous = new List<RendezVous>();

            foreach (DataRow dr in dt.Rows)
            {
                listeRendezVous.Add(new RendezVous(Int32.Parse(dr["ID"].ToString()), DateTime.Parse(dr["DEBUT"].ToString()), DateTime.Parse(dr["FIN"].ToString()), TravailleurSocialService.GetTravailleurSocialById(Int32.Parse(dr["ID"].ToString())), EnfantService.GetEnfantsByRendezVousId(Int32.Parse(dr["ID"].ToString())), dr["IDTYPERENDEZVOUS"].ToString()));
            }

            return listeRendezVous;
        } 
        #endregion

        #region GetRendezVousById
        /// <summary>
        /// récupère le rendez-vous correspondant à l'identifiant entré
        /// </summary>
        /// <param name="id"><c>int</c> : identifiant de l'enfant</param>
        /// <returns><c>RendezVous</c></returns>
        public static RendezVous GetRendezVousById(int id)
        {
            DataSet ds = RendezVousDB.GetRendezVousById(id);
            DataTable dt = ds.Tables[0];
            DataRow dr = dt.Rows[0];

            return new RendezVous(Int32.Parse(dr["ID"].ToString()), DateTime.Parse(dr["DEBUT"].ToString()), DateTime.Parse(dr["FIN"].ToString()), TravailleurSocialService.GetTravailleurSocialById(Int32.Parse(dr["ID"].ToString())), EnfantService.GetEnfantsByRendezVousId(Int32.Parse(dr["ID"].ToString())), dr["IDTYPERENDEZVOUS"].ToString());
        } 
        #endregion

        #region DeleteRendezVous
        /// <summary>
        /// permet de supprimer un RDV
        /// </summary>
        /// <param name="id"><c>int</c> : identifiant du rendez-vous</param>
        public static void DeleteRendezVous(int id)
        {
            RendezVousDB.DeleteRendezVous(id);
        } 
        #endregion

        //#region UpdateRendezVous
        ///// <summary>
        ///// permet de mettre à jour les données d'un RDV
        ///// </summary>
        ///// <param name="id"><c>int</c> : identifiant du rendez-vous</param>
        ///// <param name="jourHeureDebut"><c>DateTime</c> : jour et heure de début</param>
        ///// <param name="jourHeureFin"><c>DateTime</c> : jour et heure de fin</param>
        ///// <param name="travailleurSocial"><c>TravailleurSocial</c></param>
        ///// <param name="listeEnfants"><c>List<Enfant></c></param>
        ///// <param name="typeRDV"><c>int</c> : type de rendez-vous</param>
        //public static void UpdateRendezVous(int id, DateTime jourHeureDebut, DateTime jourHeureFin, int typeRDV, TravailleurSocial travailleurSocial, List<Enfant> listeEnfants)
        //{
        //   RendezVousDB.UpdateRendezVous(id, jourHeureDebut, jourHeureFin, travailleurSocial.Id, listeEnfants, typeRDV);
        //    foreach (Enfant e in listeEnfants)
        //    {
        //        //
        //    }
        //} 
        //#endregion

        #region CreateRendezVous
        /// <summary>
        /// permet de créer un RDV
        /// </summary>
        /// <param name="jourHeureDebut"><c>DateTime</c> : jour et heure de début</param>
        /// <param name="jourHeureFin"><c>DateTime</c> : jour et heure de fin</param>
        /// <param name="travailleurSocial"><c>TravailleurSocial</c></param>
        /// <param name="listeEnfants"><c>List<Enfant></c></param>
        /// <param name="typeRDV"><c>int</c> : type de rendez-vous</param>
        public static void CreateRendezVous(DateTime jourHeureDebut, DateTime jourHeureFin, int typeRDV, TravailleurSocial travailleurSocial, List<Enfant> listeEnfants)
        {
            RendezVousDB.CreateRendezVous(jourHeureDebut, jourHeureFin, typeRDV, travailleurSocial.Id);
        } 
        #endregion
    }
}
